package com.ruoyi.system.service;

import java.util.List;

/**
 * 图片清理服务接口
 * 
 * @author ruoyi
 * @date 2025-01-XX
 */
public interface IImageCleanupService 
{
    /**
     * 清理无引用的图片文件
     * 
     * @return 清理的文件数量
     */
    int cleanupUnreferencedImages();

    /**
     * 记录图片与业务的关联关系
     * 
     * @param imageName 图片文件名
     * @param businessType 业务类型
     * @param businessId 业务ID
     * @param businessField 业务字段名
     * @param uploadUserId 上传用户ID
     */
    void recordImageAttachment(String imageName, String businessType, String businessId, 
                              String businessField, Long uploadUserId);

    /**
     * 删除业务关联的图片
     * 
     * @param businessType 业务类型
     * @param businessId 业务ID
     * @param businessField 业务字段名（可选）
     * @return 删除的图片数量
     */
    int deleteBusinessImages(String businessType, String businessId, String businessField);

    /**
     * 删除用户关联的所有图片
     * 
     * @param userId 用户ID
     * @return 删除的图片数量
     */
    int deleteUserImages(Long userId);

    /**
     * 更新图片关联关系（用于修改操作）
     * 
     * @param oldImageName 旧图片名
     * @param newImageName 新图片名
     * @param businessType 业务类型
     * @param businessId 业务ID
     * @param businessField 业务字段名
     * @param uploadUserId 上传用户ID
     */
    void updateImageAttachment(String oldImageName, String newImageName, String businessType, 
                              String businessId, String businessField, Long uploadUserId);

    /**
     * 获取无引用的图片列表
     * 
     * @return 无引用图片文件名列表
     */
    List<String> getUnreferencedImageList();

    /**
     * 手动清理指定图片
     * 
     * @param fileName 文件名
     * @return 是否清理成功
     */
    boolean cleanupImage(String fileName);

    /**
     * 获取清理任务状态
     * 
     * @return 任务状态信息
     */
    String getCleanupStatus();
}
